typedef struct _List
{
    int     size;
    int     (*cmp) (void *, void *);
    void    (*swap) (void *, void *);
    void    *data;
} List;

struct NameList
{
    List mList;
    char **data;
};

struct NumberList
{
    List mList;
    long *data;
};
